﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StyleMVVM.Notification.Toast
{
	/// <summary>
	/// This interface represents a basic toast notification. 
	/// </summary>
	public interface IToastNotification
	{
		/// <summary>
		/// A flag weather to add a query string to the image URL
		/// </summary>
		bool AddImageQuery { get; set; }

		/// <summary>
		/// Allows you to specify a particular language, null uses the local language
		/// </summary>
		string Lang { get; set; }

		/// <summary>
		/// Specifies the base URI for the update
		/// </summary>
		string BaseUri { get; set; }

		/// <summary>
		/// Allows you to set a fallback template to use if the main template can't be found
		/// </summary>
		string FallBack { get; set; }

		/// <summary>
		/// This specifies what type of branding to use when you update the tile
		/// </summary>
		NotificationBranding Branding { get; set; }

		/// <summary>
		/// You can specify an audio sound you want played when the toast is displayed
		/// </summary>
		AudioSource? AudioSrc { get; set; }

		/// <summary>
		/// Should the audio be looped till the toast is acknowledged
		/// </summary>
		bool LoopAudio { get; set; }

		/// <summary>
		/// Mute any audio that is associated with the Toast (default is false)
		/// </summary>
		bool MuteAudio { get; set; }

		/// <summary>
		/// This method returns the XML for the notification string that should be between the visual tag
		/// </summary>
		/// <returns></returns>
		string GenerateXML();
	}
}